/**
 * 微信登录（mock版）：
 * 1) 调用 wx.login 获取临时 code
 * 2) 模拟后端换取 token 与用户基础信息
 * 3) 将 token 持久化在本地
 */

export function loginByWeixin() {
  return new Promise((resolve, reject) => {
    if (!wx || !wx.login) {
      reject(new Error('wx.login 不可用'));
      return;
    }
    wx.login({
      success(res) {
        const { code } = res;
        if (!code) {
          reject(new Error('未获取到 code'));
          return;
        }
        // 先获取用户信息，再调用后端登录注册
        wx.getUserProfile({
          desc: '用于完善个人资料',
          success: (profileRes) => {
            const { avatarUrl, nickName } = profileRes.userInfo || {};
            // 调用后端登录注册
            wx.request({
              url: 'http://localhost:8080/api/wx/login',
              method: 'POST',
              data: { code, nickName, avatarUrl },
              header: { 'content-type': 'application/json' },
              success: (resp) => {
                const { token, userInfo } = resp.data || {};
                if (!token) {
                  reject(new Error('后端未返回 token'));
                  return;
                }
                try {
                  wx.setStorageSync('token', token);
                  if (userInfo) {
                    wx.setStorageSync('userInfo', userInfo);
                  }
                } catch (e) {
                  // ignore storage error
                }
                resolve({ token, userInfo });
              },
              fail: (e) => reject(e),
            });
          },
          fail: (err) => {
            // 用户拒绝授权时，仍然可以登录，但没有头像昵称
            wx.request({
              url: 'http://localhost:8080/api/wx/login',
              method: 'POST',
              data: { code },
              header: { 'content-type': 'application/json' },
              success: (resp) => {
                const { token, userInfo } = resp.data || {};
                if (!token) {
                  reject(new Error('后端未返回 token'));
                  return;
                }
                try {
                  wx.setStorageSync('token', token);
                  if (userInfo) {
                    wx.setStorageSync('userInfo', userInfo);
                  }
                } catch (e) {
                  // ignore storage error
                }
                resolve({ token, userInfo });
              },
              fail: (e) => reject(e),
            });
          }
        });
      },
      fail(err) {
        reject(err);
      },
    });
  });
}

/**
 * 获取用户头像昵称（需用户确认）。
 * 使用 wx.getUserProfile（推荐）进行授权获取。
 */
export function getUserProfileInfo() {
  return new Promise((resolve, reject) => {
    if (!wx || !wx.getUserProfile) {
      // 兼容低版本：返回空信息，由页面决定降级策略
      resolve(null);
      return;
    }
    wx.getUserProfile({
      desc: '用于完善个人资料',
      success(res) {
        const info = (res && res.userInfo) || {};
        try {
          const saved = wx.getStorageSync('userInfo') || {};
          const merged = { ...saved, ...info };
          wx.setStorageSync('userInfo', merged);
        } catch (e) {
          // ignore
        }
        resolve(info);
      },
      fail(err) {
        reject(err);
      },
    });
  });
}


